package com.itheima.prize.msg;

import com.alibaba.fastjson.JSON;
import com.itheima.prize.commons.config.RabbitKeys;
import com.itheima.prize.commons.db.entity.CardUserGame;
import com.itheima.prize.commons.db.mapper.CardUserGameMapper;
import com.itheima.prize.commons.db.service.CardUserGameService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = RabbitKeys.QUEUE_PLAY)
public class PrizeGameReceiver {

    private final static Logger logger = LoggerFactory.getLogger(PrizeGameReceiver.class);

    @Autowired
    private CardUserGameService cardUserGameService;

    @RabbitHandler//这是一个消息处理的标记（注解），表示下面的方法是用来处理 RabbitMQ（一种消息队列工具）发送来的消息的
    public void processMessage(String message) {
        logger.info("user play : msg={}" , message);//打印一条日志，记录 "有用户参与活动了"，并显示收到的消息内容
        //TODO：任务6.2-抽奖业务-消息消费-参与的活动

        // 解析JSON消息
        CardUserGame cardUserGame = JSON.parseObject(message, CardUserGame.class);//把收到的 JSON 格式字符串消息，转换成一个CardUserGame对象（可以理解为 "用户参与活动的记录对象"）//JSON.parseObject是一个工具方法，作用是 "把 JSON 字符串翻译成 Java 对象"//转换后，就能方便地获取用户 ID、活动 ID、参与时间等信息了

        // 保存到数据库
        cardUserGameService.save(cardUserGame);//把用户参与活动的行为记录下来，存到数据库里留底

    }

}
